﻿#ifndef BASECTRL_H
#define BASECTRL_H

#include <QObject>
class BaseContext;
class BasePointer;
class InitArgs;
class StartArgs;
/**
 * @brief The PerfCtrl class
 * 表示性能测试控制器基类。
 */
class BaseCtrl : public QObject
{
    Q_OBJECT
public:
    explicit BaseCtrl(QObject *parent = Q_NULLPTR);
    virtual ~BaseCtrl() override;
    /**
     * @brief start 启动。
     * @return
     */
    virtual bool start() = 0;
    /**
     * @brief startClient 启动客户端。
     * @param initArgs 初始参数。
     * @param startArgs 客户端启动参数.
     * @return 成功返回true。
     */
    bool startClient(const InitArgs &initArgs, const StartArgs &startArgs);
    /**
     * @brief startServer  启动服务端。
     * @param initArgs 初始参数。
     * @return 成功返回true.
     */
    bool startServer(const InitArgs &initArgs);
protected slots:
    void exit();
protected:
    BaseContext *m_context; // 上下文实例。
    BasePointer *m_pointer; // 远端节点的实例。
};

#endif // BASECTRL_H
